#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <unistd.h>
#include <stdlib.h>
#include "zlog.h"
#include "yys_msg.h"

int yys_send_msg(int msg_key, void* data, size_t data_len)
{
    int msg_id = msgget(msg_key, IPC_CREAT|0777);
    dzlog_debug("send msg, msg id = %d", msg_id);
    if(msg_id < 0){
        dzlog_error("send msg id failed.");
        return -1;
    }

    int ret = msgsnd(msg_id, data, data_len, 0);
    if(ret < 0){
        dzlog_error("send msg failed.");
        return -1;
    }

    dzlog_debug("send msg succeed.");
    return 0;
}

int yys_get_msg(int msg_key, void* data, size_t data_len)
{
    int msg_id = msgget(msg_key, IPC_CREAT|0777);
    dzlog_debug("get msg, msg id = %d", msg_id);
    if(msg_id < 0){
        dzlog_error("get msg id failed.");
        return -1;
    }

    int ret = msgrcv(msg_id, data, data_len, 0, 0);
    if(ret < 0){
        dzlog_error("get msg failed.");
        return -1;
    }

    ret = msgctl(msg_id, IPC_RMID, 0);
    if(ret < 0){
        dzlog_info("release msg id failed.");
        return -1;
    }

    return 0;
}